package com.af.system.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author : zhenyun.su
 * @comment :
 * @since : 2019/9/6
 * 1. 用户处理当前日期，
 * 2. 按日期获取时间戳或字符串
 * 3. 将日期转换字符串
 * 4. 将日期时间戳转换日期或日期字符串
 * format:
 * yyyy-MM-dd
 * HH:mm:ss
 * yyyy-MM-dd HH:mm:ss
 * yyyyMMdd
 * HHmmss
 * getDateString("yyyy-MM-dd")
 * getDateString(1436624630, "yyyy-MM-dd HH:mm:ss")  2015-07-11 22:23:50
 */

public class AfDateUtils7 {
    /**
     * @comment : 获取当前日期
     */
    public static Date getDate() {
        return new Date();
    }

    /**
     * @comment : 时间戳转换日期
     */
    public static Date getDate(Long timestamp) {
        return new Date(Long.valueOf(timestamp));
    }

    /**
     * @comment : 字符串转换日期
     */
    public static Date getDate(final String sdate, String format) throws ParseException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
        return simpleDateFormat.parse(sdate);
    }

    /**
     * @comment : 获取时间戳，精确到毫秒，总共13位，前10位秒. 从1970.1.1 00:00:00 GMT 开始统计
     */
    public static Long getTimestamp() {
//        return (new Date()).getTime();
        return System.currentTimeMillis();
    }

    /**
     * @comment : 获取24小时前的时间戳，精确到毫秒，总共13位，前10位秒. 从1970.1.1 00:00:00 GMT 开始统计
     */
    public static Long getLastTimestamp(Long timestamp, int day) {
        return timestamp - (day * 24 * 60 * 60 * 1000);
    }

    /**
     * @comment : 按格式，获取日期字符串
     */
    public static String getDateString(String format) {
        return (new SimpleDateFormat(format)).format(new Date());
    }

    /**
     * @comment : 按格式和日期，获取日期字符串
     */
    public static String getDateString(Date date, String format) {
        return (new SimpleDateFormat(format)).format(date);
    }

    /**
     * @comment :  秒时间戳转换日期字符串
     */
    public static String getDateString(Long timestamp, String format) {
        return (new SimpleDateFormat(format)).format(new Date(Long.valueOf(timestamp + "000")));
    }

    /**
     * @comment :  秒时间戳转换日期字符串
     */
    public static String getDateStringForMilli(Long timestamp, String format) {
        return (new SimpleDateFormat(format)).format(new Date(Long.valueOf(timestamp)));
    }
}
